home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / cd32joy < prev    next >
Text File  |  1997-01-31  |  7KB  |  466 lines

  1.  
  2. ;    opt    O+,D+,L+,P=68020
  3.  
  4.  
  5. ;    INCDIR    include:
  6. ;    include workbench:utilities/devpac/system.gs"
  7.     INCLUDE    work:includes/libraries/lowlevel.i
  8. ;    INCLUDE    exec/exec_lib.i
  9.  
  10. _LVOReadJoyPort    EQU    -$1e
  11.  
  12.  
  13. ;    XDEF    _InitLowLevel
  14.  
  15. _InitLowLevel
  16.     lea    _lowlevel(pc),a1
  17.     moveq    #1,d0
  18.     move.l    4.w,a6
  19.     jsr    _LVOOpenLibrary(a6)
  20.     tst.l    d0
  21.     beq.s    .NoLowLib
  22.     move.l    d0,_LowBase
  23.     rts
  24.  
  25. .NoLowLib
  26.     moveq    #-1,d0
  27.     rts
  28.  
  29.  
  30. ;    XDEF    _CloseLowLevel
  31.  
  32. _CloseLowLevel
  33.     move.l    _LowBase(pc),a1
  34.     tst.l    a1
  35.     beq.s    .Exit
  36.     move.l    4.w,a6
  37.     jsr    _LVOCloseLibrary(a6)
  38. .Exit
  39.     rts
  40.  
  41.  
  42.  
  43. ; pass port number in d0 0-3
  44.  
  45. ;    XDEF    _ReadJoy
  46. _ReadJoy1
  47.     move.l a6,-(a7)
  48.     move.l #1,d0
  49.     move.l    _LowBase(pc),a6
  50.     jsr    _LVOReadJoyPort(a6)
  51.  
  52.     move.l (a7)+,a6
  53.     move.l d0,d1
  54. ;    and.l #$00FF000F,d0
  55.  
  56.     and.l    #JP_TYPE_MASK,d1
  57. ;
  58. ; bits in d1
  59. ;
  60. ;
  61.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  62.     beq.b    .Empty
  63.  
  64.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  65.     beq.b    .GameCtrl
  66.  
  67.     cmp.l    #JP_TYPE_MOUSE,d1    
  68.     beq    .Mouse
  69.  
  70.     cmp.l    #JP_TYPE_JOYSTK,d1   
  71.     beq    .Joystick
  72.  
  73. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  74. ;
  75. ;
  76. ; type is an unknown type 
  77. ;
  78. .Empty
  79. ;
  80.     rts
  81. ;
  82. .GameCtrl
  83.  
  84. ;    these are the bit defs..
  85. ;
  86. ;     JPF_BUTTON_BLUE         Blue - Stop
  87. ;     JPF_BUTTON_RED          Red - Select
  88. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  89. ;     JPF_BUTTON_GREEN        Green - Shuffle
  90. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  91. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  92. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  93. ;     JPF_JOY_UP              Up
  94. ;     JPF_JOY_DOWN            Down
  95. ;     JPF_JOY_LEFT            Left
  96. ;     JPF_JOY_RIGHT           Right
  97.  
  98.  move.l #KeyMap,a5
  99.  moveq #0,d5
  100.  move.b forward_key,d5
  101.  move.l d0,d1
  102.  and.l #JPF_JOY_UP,d0
  103.  sne (a5,d5.w)
  104.  move.b backward_key,d5
  105.  move.l d1,d0
  106.  and.l #JPF_JOY_DOWN,d0
  107.  sne (a5,d5.w)
  108.  move.b turn_left_key,d5
  109.  move.l d1,d0
  110.  and.l #JPF_JOY_LEFT,d0
  111.  sne (a5,d5.w)
  112.  move.b turn_right_key,d5
  113.  move.l d1,d0
  114.  and.l #JPF_JOY_RIGHT,d0
  115.  sne (a5,d5.w)
  116.  
  117.  move.b fire_key,d5
  118.  move.l d1,d0
  119.  and.l #JPF_BUTTON_GREEN,d0
  120.  sne (a5,d5.w)
  121.  
  122.  move.b operate_key,d5
  123.  move.l d1,d0
  124.  and.l #JPF_BUTTON_YELLOW,d0
  125.  sne (a5,d5.w)
  126.  
  127.  move.b run_key,d5
  128.  move.l d1,d0
  129.  and.l #JPF_BUTTON_RED,d0
  130.  sne (a5,d5.w)
  131.  
  132.  move.b duck_key,d5
  133.  move.l d1,d0
  134.  and.l #JPF_BUTTON_BLUE,d0
  135.  beq.s .notduckbutpre
  136.  tst.b .ducklast
  137.  bne.s .notduckbut
  138.  st (a5,d5.w)
  139.  st .ducklast
  140.  bra.s .notduckbut
  141. .notduckbutpre:
  142.  clr.b .ducklast
  143. .notduckbut:
  144.  
  145.  move.b force_sidestep_key,d5
  146.  move.l d1,d0
  147.  and.l #JPF_BUTTON_FORWARD,d0
  148.  sne (a5,d5.w)
  149.  
  150.  
  151.  move.b #$19,d5
  152.  move.l d1,d0
  153.  and.l #JPF_BUTTON_PLAY,d0
  154.  sne (a5,d5.w)
  155.  
  156.  
  157.  move.l d1,d0
  158.  and.l #JPF_BUTTON_REVERSE,d0
  159.  beq.s .nonextweappre
  160.  
  161.  tst.b PLR1_GunFrame
  162.  bne.s .nonextweappre
  163.  
  164.  tst.b .heldlast
  165.  bne.s .nonextweap
  166.  st .heldlast
  167.  moveq #0,d0
  168.  moveq #0,d2
  169.  move.b PLR1_GunSelected,d2
  170. ; move.l #PLR1_GunData,a6
  171. ; move.l #GUNVALS,a5
  172. ;
  173. ;.findcurrent: 
  174. ; cmp.b (a5,d0.w),d2
  175. ; beq.s .foundcurrent
  176. ; add.b #1,d0
  177. ; bra .findcurrent
  178. ;
  179. ;.foundcurrent:
  180.  
  181.  moveq #0,d2
  182. .picknext:
  183.  add.b #1,d0
  184.  cmp.b #4,d0
  185.  ble.s .notfirst
  186.  move.b #0,d0
  187. .notfirst:
  188.  
  189.  moveq #0,d2
  190.  moveq #0,d3 
  191.  move.b (a5,d0.w),d2
  192.  move.b d2,d3
  193.  lsl.w #5,d2
  194.  tst.b 7(a6,d2.w)
  195.  beq.s .picknext
  196.  move.b d3,PLR1_GunSelected
  197.  
  198.  bra .nonextweap
  199.  
  200. .nonextweappre:
  201.  clr.b .heldlast
  202. .nonextweap:
  203.  
  204.  
  205.  rts
  206.  
  207. .heldlast: dc.b 0
  208. .ducklast: dc.b 0
  209.  
  210. .Joystick
  211.  
  212.  move.l #KeyMap,a5
  213.  move.l #SineTable,a0
  214.  
  215.  btst #1,$dff00c
  216.  sne d0
  217.  btst #1,$dff00d
  218.  sne d1
  219.  btst #0,$dff00c
  220.  sne d2
  221.  btst #0,$dff00d
  222.  sne d3
  223.  moveq #0,d5
  224.  move.b fire_key,d5
  225.  btst #7,$bfe001
  226.  seq (a5,d5.w)
  227.  
  228.  move.b turn_left_key,d5
  229.  move.b d0,(a5,d5.w)
  230.  move.b turn_right_key,d5
  231.  move.b d1,(a5,d5.w)
  232.  eor.b d0,d2
  233.  move.b forward_key,d5
  234.  move.b d2,(a5,d5.w)
  235.  eor.b d1,d3
  236.  move.b backward_key,d5
  237.  move.b d3,(a5,d5.w)
  238.  rts
  239.  
  240. .Mouse
  241.     rts
  242.  
  243.  
  244.  
  245.  
  246. _ReadJoy2
  247.     move.l a6,-(a7)
  248.     move.l #1,d0
  249.     move.l    _LowBase(pc),a6
  250.     jsr    _LVOReadJoyPort(a6)
  251.  
  252.     move.l (a7)+,a6
  253.     move.l d0,d1
  254. ;    and.l #$00FF000F,d0
  255.  
  256.     and.l    #JP_TYPE_MASK,d1
  257. ;
  258. ; bits in d1
  259. ;
  260. ;
  261.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  262.     beq.b    .Empty
  263.  
  264.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  265.     beq.b    .GameCtrl
  266.  
  267.     cmp.l    #JP_TYPE_MOUSE,d1    
  268.     beq    .Mouse
  269.  
  270.     cmp.l    #JP_TYPE_JOYSTK,d1   
  271.     beq    .Joystick
  272.  
  273. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  274. ;
  275. ;
  276. ; type is an unknown type 
  277. ;
  278. .Empty
  279. ;
  280.     rts
  281. ;
  282. .GameCtrl
  283.  
  284. ;    these are the bit defs..
  285. ;
  286. ;     JPF_BUTTON_BLUE         Blue - Stop
  287. ;     JPF_BUTTON_RED          Red - Select
  288. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  289. ;     JPF_BUTTON_GREEN        Green - Shuffle
  290. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  291. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  292. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  293. ;     JPF_JOY_UP              Up
  294. ;     JPF_JOY_DOWN            Down
  295. ;     JPF_JOY_LEFT            Left
  296. ;     JPF_JOY_RIGHT           Right
  297.  
  298.  move.l #KeyMap,a5
  299.  moveq #0,d5
  300.  move.b forward_key,d5
  301.  move.l d0,d1
  302.  and.l #JPF_JOY_UP,d0
  303.  sne (a5,d5.w)
  304.  move.b backward_key,d5
  305.  move.l d1,d0
  306.  and.l #JPF_JOY_DOWN,d0
  307.  sne (a5,d5.w)
  308.  move.b turn_left_key,d5
  309.  move.l d1,d0
  310.  and.l #JPF_JOY_LEFT,d0
  311.  sne (a5,d5.w)
  312.  move.b turn_right_key,d5
  313.  move.l d1,d0
  314.  and.l #JPF_JOY_RIGHT,d0
  315.  sne (a5,d5.w)
  316.  
  317.  move.b fire_key,d5
  318.  move.l d1,d0
  319.  and.l #JPF_BUTTON_GREEN,d0
  320.  sne (a5,d5.w)
  321.  
  322.  move.b operate_key,d5
  323.  move.l d1,d0
  324.  and.l #JPF_BUTTON_YELLOW,d0
  325.  sne (a5,d5.w)
  326.  
  327.  move.b run_key,d5
  328.  move.l d1,d0
  329.  and.l #JPF_BUTTON_RED,d0
  330.  sne (a5,d5.w)
  331.  
  332.  move.b duck_key,d5
  333.  move.l d1,d0
  334.  and.l #JPF_BUTTON_BLUE,d0
  335.  beq.s .notduckbutpre 
  336.  tst.b .ducklast
  337.  bne.s .notduckbut
  338.  st .ducklast
  339.  st (a5,d5.w)
  340.  bra .notduckbut
  341. .notduckbutpre:
  342.  clr.b .ducklast
  343. .notduckbut:
  344.  
  345.  
  346.  move.b #$19,d5
  347.  move.l d1,d0
  348.  and.l #JPF_BUTTON_PLAY,d0
  349.  sne (a5,d5.w)
  350.  
  351.  move.b force_sidestep_key,d5
  352.  move.l d1,d0
  353.  and.l #JPF_BUTTON_FORWARD,d0
  354.  sne (a5,d5.w)
  355.  
  356.  move.l d1,d0
  357.  and.l #JPF_BUTTON_REVERSE,d0
  358.  beq.s .nonextweappre
  359.  
  360.  tst.b PLR2_GunFrame
  361.  bne.s .nonextweappre
  362.  
  363.  tst.b .heldlast
  364.  bne.s .nonextweap
  365.  st .heldlast
  366.  moveq #0,d0
  367.  move.b PLR2_GunSelected,d2
  368. ; move.l #PLR2_GunData,a6
  369. ; move.l #GUNVALS,a5
  370. ;
  371. ;.findcurrent: 
  372. ; cmp.b (a5,d0.w),d2
  373. ; beq.s .foundcurrent
  374. ; add.b #1,d0
  375. ; bra .findcurrent
  376. ;
  377. ;.foundcurrent: 
  378.  
  379.  moveq #0,d2
  380.  
  381. .picknext:
  382.  add.b #1,d0
  383.  cmp.b #4,d0
  384.  ble.s .notfirst
  385.  move.b #0,d0
  386. .notfirst:
  387.  
  388.  moveq #0,d2
  389.  moveq #0,d3
  390.  move.b (a5,d0.w),d2
  391.  move.b d2,d3
  392.  lsl.w #5,d2
  393.  tst.b 7(a6,d2.w)
  394.  beq.s .picknext
  395.  move.b d3,PLR2_GunSelected
  396.  
  397.  bra .nonextweap
  398.  
  399. .nonextweappre:
  400.  clr.b .heldlast
  401. .nonextweap:
  402.  
  403.  
  404.  rts
  405.  
  406. .heldlast: dc.b 0
  407. .ducklast: dc.b 0
  408.  
  409. .Joystick
  410.  
  411.  move.l #KeyMap,a5
  412.  move.l #SineTable,a0
  413.  
  414.  btst #1,$dff00c
  415.  sne d0
  416.  btst #1,$dff00d
  417.  sne d1
  418.  btst #0,$dff00c
  419.  sne d2
  420.  btst #0,$dff00d
  421.  sne d3
  422.  moveq #0,d5
  423.  move.b fire_key,d5
  424.  btst #7,$bfe001
  425.  seq (a5,d5.w)
  426.  
  427.  move.b turn_left_key,d5
  428.  move.b d0,(a5,d5.w)
  429.  move.b turn_right_key,d5
  430.  move.b d1,(a5,d5.w)
  431.  eor.b d0,d2
  432.  move.b forward_key,d5
  433.  move.b d2,(a5,d5.w)
  434.  eor.b d1,d3
  435.  move.b backward_key,d5
  436.  move.b d3,(a5,d5.w)
  437.  rts
  438.  
  439. .Mouse
  440.     rts
  441.  
  442.  
  443. ;BUTVALS
  444. ; dc.l JPF_BUTTON_BLUE         Blue - Stop
  445. ; dc.l JPF_BUTTON_RED          Red - Select
  446. ; dc.l JPF_BUTTON_YELLOW       Yellow - Repeat
  447. ; dc.l JPF_BUTTON_GREEN        Green - Shuffle
  448. ; dc.l JPF_BUTTON_FORWARD      Charcoal - Forward
  449. ; dc.l JPF_BUTTON_REVERSE      Charcoal - Reverse
  450. ; dc.l JPF_BUTTON_PLAY         Grey - Play/Pause
  451. ; dc.l JPF_JOY_UP              Up
  452. ; dc.l JPF_JOY_DOWN            Down
  453. ; dc.l JPF_JOY_LEFT            Left
  454. ; dc.l JPF_JOY_RIGHT           Right
  455.  
  456. Data:
  457.  
  458. _LowBase
  459.     dc.l    0
  460.  
  461. _lowlevel
  462.     dc.b    'lowlevel.library',0
  463.     even
  464.  
  465. ;    END
  466.